//================v4要点总结===============
/**
 * 1. 递归的优化版
 * 2. 思路：就是将next.next直接指向自己，即可不用采用内部函数
 */
/**
 * Definition for singly-linked list.
 *  */

// eslint-disable-next-line no-unused-vars
function ListNode(val, next) {
    this.val = (val === undefined ? 0 : val)
    this.next = (next === undefined ? null : next)
}

/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var reverseList = function (head) {
    if (!head || !head.next) {
        // 返回的是尾结点
        return head
    }
    // 返回的p是尾结点
    let p = reverseList(head.next)
    // 迭代完成之后，在返回途中，从后往前改动next，指向自己
    head.next.next = head
    // 断掉之前的next
    head.next = null
    return p
};

console.log(reverseList)